This disclosure relates to computer-generated imagery (CGI) and computer-aided animation. More specifically, this disclosure relates to optimizing the performance of arbitrary deformers such that they can be executed in a reasonable time without consuming undue computing resources in CGI and computer-aided animation.
With the wide-spread availability of computers, computer graphics artists and animators can rely upon computers to assist in production process for creating animations and computer-generated imagery (CGI). This may include using computers to have physical models be represented by virtual models in computer memory. Typically, two-dimensional (2D) or three-dimensional (3D) computer-aided animation combines 2D/3D models of objects and programmed movement of one or more of the models. In 3D computer animation, the first step is typically the object modeling process. Objects can be sculpted much like real clay or plaster, working from general forms to specific details, for example, with various sculpting tools. Models may then be constructed, for example, out of geometrical vertices, faces, and edges in a 3D coordinate system to represent the objects. These virtual models can then be manipulated using computers to, for example, simulate physics, design aesthetic actions such as poses or other deformations, crate lighting, coloring and paint, or the like, of characters or other elements of a computer animation display.
Pixar is one of the pioneering companies in the computer-generated imagery (CGI) and computer-aided animation industry. Pixar is more widely known as Pixar Animation Studios, the creators of animated features such as “Toy Story” (1995) and “Toy Story 2” (1999), “A Bugs Life” (1998), “Monsters, Inc.” (2001), “Finding Nemo” (2003), “The Incredibles” (2004), “Cars” (2006), “Ratatouille” (2007), and others. In addition to creating animated features, Pixar develops computing platforms and tools specially designed for computer-aided animation and CGI. One such example is now known as PhotoRealistic RenderMan, or PRMan for short. PRMan is a photorealistic RenderMan-compliant rendering software system based on the RenderMan Interface Specification (RISpec) which is Pixar's technical specification for a standard communications protocol (or interface) between 3D computer graphics programs and rendering programs. PRMan is produced by Pixar and used to render their in-house 3D animated movie productions. It is also available as a commercial product licensed to third parties, sold as part of a bundle called RenderMan Pro Server, a RenderMan-compliant rendering software system developed by Pixar based on their own interface specification. Other examples include tools and plug-ins for programs such as the AUTODESK MAYA high-end 3D computer graphics software package from AutoDesk, Inc. of San Rafael, Calif.
One core functional aspect of PRMan can include the use of a “rendering engine” to convert geometric and/or mathematical descriptions of objects into images. This process is known in the industry as “rendering.” For movies, other animated features, shorts, and special effects, a user (e.g., a skilled computer graphics artist) can specify the geometric or mathematical description of objects to be used in the rendered image or animation sequence, such as characters, props, background, or the like. In some instances, the geometric description of the objects may include a number of animation control variables (avars) and values for the avars. An animator may also pose the objects within the image or sequence and specify motions and positions of the objects over time to create an animation.
As such, the production of CGI and computer-aided animation may involve the extensive use of various computer graphics techniques to produce a visually appealing image from the geometric description of an object that may be used to convey an essential element of a story or provide a desired special effect. One of the challenges in creating these visually appealing images is the can be the balancing of a desire for a highly-detailed image of a character or other object with the practical issues involved in allocating the resources (both human and computational) required to produce those visually appealing images.
A realistic looking character model is often extremely complex, having millions of surface elements and hundreds or thousands of attributes. Due to the complexity involved with animating such models, animation tools often rely on armatures and animation variables to define character animation. For example, an armature may be a “stick figure” representing a character's pose, or bodily position. By moving armature segments, which are the “sticks” of the “stick figure,” an armature can be manipulated into a desired pose. As an armature is posed by an animator, animation tools may modify an associated character model so that the bodily attitude of a character roughly mirrors that of the armature.
Animation variables can be another way of defining a character animation of a complex character model. Animation variables can include parameters for functions that modify the appearance of a character model. Animation variables and their associated functions can be used to abstract complicated modifications to a character model to a relatively simple control. Animation variables and their associated functions may manipulate armature segments, thereby altering the appearance of a character model indirectly, or manipulate a character model directly, bypassing the armature.
Functions associated with animation variables, referred to as model components, can be used to create a variety of realistic and artistic effects. For example, model components can be used to create layers of bones, muscle, and fat beneath the surface of a character model, so that the surface or skin of a character model deforms either realistically or as desired as it is posed. Model components can also be used to simulate the movement of non-rigid features, such as hair and cloth. In addition to replicating specific physical phenomena, model components can be used to manipulate a character model according to an algorithm or procedure, such as sculpted shapes, metaballs, and physics simulations.
Model components can be extremely complex and therefore time-consuming to execute. To create artistically effective character animation, an animator may often create a rough version of a scene and then repeatedly fine-tune a character animation to create desired drama and expression of the final scene. The time needed to execute model components as animators pose and repose character models can hinder the efficiency of the animator during this artistic process. In one worst case, an animator may be forced to use simplified “stand-in” character models to create the initial animation, and then wait to see the resulting animation with the final character model. In this situation, the animator is essentially working blind and can only guess at the final result. Conversely, the additional computing resources needed to process model components in a reasonable time, if even possible, substantially increases the costs of creating animation.
Accordingly, what is desired is to solve one or more of the problems relating to optimizing the performance of model components such that they can be executed in a reasonable time without consuming undue computing resources, some of which may be discussed herein. Additionally, what is desired is to reduce some of the drawbacks relating to optimize any type of model component, regardless of its function or complexity, some of which may be discussed herein.